#ifndef KCPICKSAMEFILE_H
#define KCPICKSAMEFILE_H
#include "KvPickOp.h"
#include <QByteArray>
#include <QMap>
#include <QPair>

// 找相同文件
class KcPickSameFile : public KvPickOp
{
private:

    bool doPick_(const QString& filePath) override;

    void* doRead_(const QString& filePath) override;

    void doCalc_(const QString& filePath, void* fileObj) override;

    void dropFileObject_(void* fileObj) override;

private:
    QMap<QByteArray, QPair<QStringList, int>> result_; // 扫描结果，md5值->{ 路径列表, 分组序号 }
    QMap<qint64, QString> size2Files_; // 优化：文件大小到文件路径（首个）的映射，只有相同大小的文件超过1个时才计算md5
    int groupId_{ 0 };
};

#endif // KCPICKSAMEFILE_H
